#pragma once
#include <jni.h>
#include <string>
#include <memory>

// FFmpegKit Java类引用
class FFmpegKitWrapper {
public:
    FFmpegKitWrapper();
    ~FFmpegKitWrapper();
    
    // 初始化FFmpegKit
    bool initialize();
    
    // 打开媒体文件
    bool openMedia(const std::string& filePath);
    
    // 获取媒体信息
    struct MediaInfo {
        int width;
        int height;
        double duration;
        int bitrate;
        std::string codec;
    };
    
    MediaInfo getMediaInfo();
    
    // 播放控制
    bool play();
    bool pause();
    bool stop();
    bool seek(double time);
    
    // 音量控制
    void setVolume(double volume);
    
    // 清理资源
    void cleanup();
    
private:
    JavaVM* jvm_;
    jobject ffmpegKit_;
    jclass ffmpegKitClass_;
    jmethodID getMediaInformationMethod_;
    jmethodID executeMethod_;
    
    bool isInitialized_;
    bool isPlaying_;
    double currentTime_;
    double duration_;
    
    // 内部方法
    bool setupJNI();
    void cleanupJNI();
};
